import axios from 'axios'
// 导入路由
import router from '../router'
// 导入 toast
import { Toast } from 'vant'
// 导入 删除token 方法

import { removeLocal, getLocal } from '@/utils/local.js'
import store from '../store'
// 创建一个副本
const _fetch = axios.create({
  baseURL: process.env.VUE_APP_URL
})

// 请求拦截
_fetch.interceptors.request.use(
  config => {
    // 如果接口不需要token 你传它就报错
    // 需要token才加，不需要不加
    // config.headers.authorization = `Bearer ` + getLocal()
    if (config.needToken) {
      config.headers.authorization = `Bearer ` + getLocal()
    }
    window.console.log(config)
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
// 响应拦截
_fetch.interceptors.response.use(
  res => {
    if (res.data.code === 200) {
      return res
    }
    // token错误 提示一下 删除token 跳转到登录页 阻止.then执行  return Promise.reject(错误信息)
    else if (res.data.code === 401 || res.data.code === 403) {
      Toast.fail(res.data.message)
      removeLocal() // 记得导入
      router.push('/login') // 记得单独导入方法
      // token出现问题时，回到登录页时，修改vuex登录状态   需要导入store
      store.commit('setLoginStatus', false)
      return Promise.reject(res.data.message)
    } else {
      // 如果不是200，其他处理  提示错误信息  阻止.then执行  return Promise.reject(错误信息)
      Toast.fail(res.data.message)
      return Promise.reject(res.data.message)
    }
  },
  error => {
    return Promise.response(error)
  }
)

export default _fetch
